/*!
 @header
 @abstract 文件工具封装类
 @author shadow, 15-06-25 14:06:40
 
 @version 1.0
 */
#import <Foundation/Foundation.h>
/*!
 @class
 @abstract 文件工具封装类
 */
@interface TMTFileUtils : NSObject

/*!
 @method
 @abstract 获取应用程序的根目录
 @discussion
 
 @return 根目录路径
 */
+ (NSString *)homePath;

/*!
 @method
 @abstract 获取应用程序的Document目录
 @discussion
 
 @return Document目录路径
 */
+ (NSString *)documentPath;

/*!
 @method
 @abstract 获取应用程序的Library目录
 @discussion
 
 @return Library目录路径
 */
+ (NSString *)libraryPath;

/*!
 @method
 @abstract 获取应用程序的Cache目录
 @discussion
 
 @return Cache目录路径
 */
+ (NSString *)cachePath;

/*!
 @method
 @abstract 获取应用程序的Temp目录
 @discussion
 
 @return Temp目录路径
 */
+ (NSString *)tempPath;

/*!
 @method
 @abstract 创建新目录
 @discussion
 
 @param dirName   目录名字
 @param directory 上层文件夹
 */
+ (void)makeDir:(NSString *)dirName inDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 删除文件或者目录
 @discussion
 
 @param fileName  文件名 或者 目录名
 @param directory 上层文件夹
 */
+ (void)deleteFile:(NSString *)fileName inDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 查找沙盒中某个文件夹下面的某个文件
 @discussion
 
 @param name      文件名
 @param directory 沙盒中的某个文件夹 默认为 NSDocumentDirectory
 @return 文件路径
 */
+ (NSString *)filePathWithName:(NSString *)fileName inDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 拷贝文件到NSDocumentDirectory中
 @discussion
 
 @param fileName 文件名
 
 @return 文件路径
 */
+ (NSString *)duplicateBundleFileWithName:(NSString *)fileName;

/*!
 @method
 @abstract 拷贝文件到指定的文件夹中
 @discussion
 
 @param fileName  文件名
 @param directory 沙盒中的某个文件夹
 
 @return 文件路径
 */
+ (NSString *)duplicateBundleFileWithName:(NSString *)fileName toDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 拷贝文件到指定的文件夹中
 @discussion
 
 @param fileName  文件名
 @param directory 沙盒中的某个文件夹
 @param overwrite 是否覆盖
 
 @return 文件路径
 */
+ (NSString *)duplicateBundleFileWithName:(NSString *)fileName toDirectory:(NSSearchPathDirectory)directory overwrite:(BOOL)overwrite;

/*!
 @method
 @abstract 读取文件内容
 @discussion
 
 @param fileName  文件名
 @param directory 上层文件夹
 
 @return 文件内容
 */
+ (NSString *)readContentWithName:(NSString *)fileName inDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 写入内容到文件
 @discussion
 
 @param content   内容
 @param fileName  文件名
 @param directory 上层文件夹
 
 @return 成功与否
 */
+ (BOOL)writeContent:(NSString *)content toFile:(NSString *)fileName inDirectory:(NSSearchPathDirectory)directory;

/*!
 @method
 @abstract 写入内容到文件内容
 @discussion
 
 @param content   内容
 @param fileName  文件名
 @param directory 上层文件夹
 @param append    NO 覆盖原有内容 YES追加到原有内容的后面
 
 @return 成功与否
 */
+ (BOOL)writeContent:(NSString *)content toFile:(NSString *)fileName inDirectory:(NSSearchPathDirectory)directory append:(BOOL)append;

/*!
 @method
 @abstract   修改文件权限
 @discussion 修改文件权限
 
 @param value 权限值  16进制的权限值 如：0x00000777 0x00000775
 @param path  文件路径
 */
+ (void)modifyPrivilegeOfFile:(NSString *)path value:(__uint16_t)value;

@end
